#include "nfc_read_switch.h"
#include "rte.h"
#include "nfc_read_card.h"

static product_switch nfc_p_sw;

/*
 * 函数介绍: NFC读卡器检测产品开关选择初始化
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void Nfc_read_product_switch_init(void)
{
    nfc_p_sw.p_sw = TEST_MAX;
}

/*
 * 函数介绍: NFC读卡器检测产品初始化
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void Nfc_read_init(void)
{
    Nfc_read_product_switch_init();
    NFCRC_read_card_init();
}

/*
 * 函数介绍: 获取一次当前是检查读卡器还是检测NFC卡
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void Nfc_read_rt(void)
{
    if (GPIO_PIN_SET == RTE_GPIO_PIN_GET_LEVEL(GPIOC,INPUT6_PC8_Pin))
    {
        nfc_p_sw.p_sw = TEST_CARD;
        /*切换LCD为测试卡界面*/
        RTE_LCD_LCD_INTERFACE_SWITCHING(NFC_CARD_READER_TEST,true);
        /*如果是测试卡的话需要给读卡器供电*/
        RTE_GPIO_PIN_SET_LEVEL(GPIOC, OverCurCtr_O_LL_PC13_Pin, GPIO_PIN_SET);/*产品上电*/
				RTE_GPIO_PIN_SET_LEVEL(GPIOE, Short_CTRL_PE5_Pin, GPIO_PIN_SET);
    }else{
        nfc_p_sw.p_sw = READ_CARD;
        /*切换LCD为测试读卡器界面*/
        RTE_LCD_LCD_INTERFACE_SWITCHING(NFC_READER_TEST, true);
    }
}

/**
 * 读取产品开关状态
 * 
 * 本函数用于读取当前产品的开关状态。它会返回一个代表产品开关状态的值。
 * 
 * @return 返回产品开关状态。返回值的具体含义取决于实现。
 */
product_sw Nfc_get_read(void)
{
    return nfc_p_sw.p_sw; // 返回产品开关状态
}

void NFC_Lighting(Rt_result result)
{
    static uint32_t Record_send_time = 0; /*记录_发送_时间*/
    static uint32_t Record_send_time_Light50ms = 0; /*记录_发送_时间*/
    static uint8_t can_NFC_LIGHT[8] = {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};    /*can请求亮灯*/
    if (TEST_FAIL == result)
    {
        return;
    }
            RTE_GPIO_PIN_SET_LEVEL(GPIOC, OverCurCtr_O_LL_PC13_Pin, GPIO_PIN_SET);/*产品上电*/
				RTE_GPIO_PIN_SET_LEVEL(GPIOE, Short_CTRL_PE5_Pin, GPIO_PIN_SET);
                
    Record_send_time = RTE_GET_TIMER();            /*记录发送开始时间*/
    Record_send_time_Light50ms = RTE_GET_TIMER();            /*记录发送开始时间*/
    RTE_BUZZER_ALARM(2);
    //RTE_UART7_LCD_SHOW(NFC_READER_TEST, LIGHT_ONOROFF, 0x01);/*屏幕显示读卡器灯亮灯灭*/
    while (no_timeout == RTE_TIMEOUT_JUDGMENT(Record_send_time, NFC_LIGHTING_TIME))
    {
        if (RTE_TIMEOUT_JUDGMENT(Record_send_time_Light50ms, NFC_LIGHTING_CYCLE_TIME))
        {
            RTE_CAN_TRANSMIT(0x310,can_NFC_LIGHT,8);          /*can请求亮灯*/
						RTE_CAN_TRANSMIT(0x310,can_NFC_LIGHT,8);          /*can请求亮灯*/
						RTE_CAN_TRANSMIT(0x310,can_NFC_LIGHT,8);          /*can请求亮灯*/
            Record_send_time_Light50ms = RTE_GET_TIMER();            /*记录发送开始时间*/
            RTE_IWDG_REFRESH();
        }
        
    }
    //RTE_UART7_LCD_SHOW(NFC_READER_TEST, LIGHT_ONOROFF, 0x00);
    /*屏幕显示正在亮灯*/
}

/*
 * 函数介绍: NFC读卡器和卡测试LCD结果显示
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void NFC_card_reader_Result_show(Rt_result result)
{   
    if (TEST_WAIT == result)
    {
        return;
    }
    RTE_UART7_LCD_SHOW(NFC_READER_TEST, TEST_RESULT, result);
    //NFC_Lighting(result);
    /*读卡器*/
}


/*
 * 函数介绍: NFC读卡器检测产品开关选择
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Rt_result Nfc_read_product_switch(void)
{
    Rt_result result = TEST_WAIT;
    result = NFCread_card_test();
    NFC_card_reader_Result_show(result);
    return result;
}
